home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / mods / readback2.33+ / bk.c next >
Encoding:
C/C++ Source or Header  |  1993-02-22  |  1.8 KB  |  106 lines

  1.  
  2. #include <exec/types.h>
  3. #include <dos.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7. #include <string.h>
  8. #include <clib/exec_protos.h>
  9. #include <clib/dos_protos.h>
  10. #include "sc:ae/CmodGlue/glue.h"
  11. #include "sc:ae/CmodGlue/doorheader.h"
  12.  
  13. void LastCommand(void);
  14. void end(void);
  15.  
  16. #define sm sendmessage
  17. #define gu getuserstring
  18. #define sr StripReturn
  19.  
  20. void StripReturn(char *s);
  21. int readbackwards(BPTR fi,char *string);
  22. void mysearch(char *filename,char *string);
  23.  
  24. main(int argc,char *argv[])
  25. {
  26.    int mynode;
  27.    char temp[100];
  28.    char location[100];
  29.    if(argc!=2)
  30.      exit(0);
  31.    mynode=argv[1][0]-'0';
  32.    Register(argv[1][0]-'0');
  33.    gu(location,BB_LOCAL);
  34.    sprintf(temp,"%sNode%d/callerslog",location,mynode);
  35.    mysearch(temp,"****");
  36.    ShutDown();
  37.    end();
  38. }
  39.  
  40. void LastCommand(void)
  41. {
  42.   sm("",1);
  43. }
  44. void end(void)
  45. {
  46.   exit(0);
  47. }
  48.  
  49. void mysearch(char *filename,char *string)
  50. {
  51.    BPTR fi;
  52.    char image[190];
  53.    fi=Open(filename,MODE_OLDFILE);
  54.    if(fi)
  55.    {
  56.       Seek(fi,0L,OFFSET_END);
  57.       if(readbackwards(fi,string))
  58.       {
  59.          while(FGets(fi,(UBYTE *)&image,180L)!=NULL)
  60.          {
  61.            sr(image); sm(image,1);
  62.          }
  63.       }
  64.       else
  65.       {
  66.         sm("Error cannot locate text.",1);
  67.       }
  68.       Close(fi);
  69.    }
  70. }
  71. int readbackwards(BPTR fi,char *string)
  72. {
  73.   register int total=0;
  74.   char str[180];
  75.   while(1)
  76.   {
  77.     if(Seek(fi,-1L,OFFSET_CURRENT)==-1L) return(0);
  78.     
  79.     Read(fi,(APTR)&str[total],1L);
  80.     
  81.     if(str[total]!=string[total]) total=0; 
  82.     else
  83.     {
  84.       total++;
  85.   
  86.       if(string[total]=='\0')
  87.       {  
  88.         Seek(fi,-1L,OFFSET_CURRENT); return(1); 
  89.       }
  90.     }
  91.     if(Seek(fi,-1L,OFFSET_CURRENT)==-1L) return(0);
  92.   }
  93. }
  94.  
  95. void StripReturn(char *s)
  96. {
  97.   register int i;
  98.   i=strlen(s)-1;
  99.   while(i>-1)
  100.   {
  101.     if(*(s+i)<=32) *(s+i)='\0'; else break;
  102.     i--;
  103.   }
  104. }
  105.  
  106.